
//#include "ngram.h"
#include <fstream>
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <string>
#include <map>
#include "Parser.h"
using namespace std;

class estructuraAuxiliar
{
    public:
        estructuraAuxiliar(int maxNgram=0);
        ~estructuraAuxiliar();
        void add(string nuevoNgrama);
        void dump();
        void emit();
        int ngramas;
        unsigned long int nroMaximoDeNGramasPermitidos;
        string especificacion;
        void unificarArchivosTemporales();
        unsigned long int obtenerFrecuencia(string representacionDeNgrama);
        static estructuraAuxiliar contadoresDeNgramas;
         unsigned int cantidadDeArchivosAUnificar();
         unsigned int archivosRestantesAUnificar;
         string obtenerSiguienteNombreDeArchivo(int nroDeArchivoActual=0);
         std::map <string, unsigned long int*> aux;


    protected:
    private:
        //ofstream* crearArchivoUnificadoTemporal(int nroDeArchivo);

        int contadorDeNGramas;



        //ofstream archivoUnificado;
        void unificarParDeArchivosTemporales(int nroDelPrimeroDelPar);

        bool unicoArchivoTemporal();

        string obtenerNombreArchivo(int nroDeArchivoActual);

        void sumarDatosDeTuplas(Tupla tupla1,Tupla tupla2,int elementosASumar);

        string obtenerNombreDeUnificado();

        void escribirTuplaAlArchivoUnificado(Tupla tuplaAEscribir, std::ofstream* archivoUnificado);

        void escribirTuplaCondicinada(Tupla tuplaAEscribir, std::ofstream* archivoUnificado);


};

